#include<iostream>
#include<regex>
#include<string>
int main()
{
    //std::string str="GET /login?user=zhangsan&passwrd=123456 HTTP/1.1/r/n";
    std::string str="GET /login? HTTP/1.1/r/n";

    std::smatch matchs;
    std::regex reg("(GET|POST|PUT|DELETE|HEAD) ([^?]*)(?:\\?(.*))? (HTTP/1\\.[01])(?:\n|\r\n)?");
    //(GET|POST|PUT|DELETE|HEAD)表示匹配其中的某一个
    //[^?]表示非？字符 后面的*指匹配前面的0个字符或多个
    //*代表匹配其前面的字符零次或多次 
    //.*组合在一起就表示匹配任意长度的字符序列。
    //\\?表示原始问号。\\?(.*)表示以？开头匹配
    bool ret=regex_match(str,matchs,reg);
    if(!ret)
    {
        return -1;
    }
    for(auto e:matchs)
    {
        std::cout<<e<<std::endl;
    }
    return 0;
}